#! /bin/sh
### BEGIN INIT INFO
# Provides:          grr_http_server
# Required-Start:    $network $named $local_fs $syslog
# Required-Stop:     $network $named $local_fs $syslog
# Should-Start:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       GRR Rapid Response HTTP server
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
DESC="GRR Rapid Response HTTP server"
NAME="grr-http-server"
DAEMON="/usr/bin/grr_server"
DAEMON_ARGS="--start_http_server --config=/etc/grr/grr-server.conf"
PIDFILE="/var/run/${NAME}.pid"
SCRIPTNAME="/etc/init.d/${NAME}"
DEFAULTFILE="/etc/default/${NAME}"

[ -x "${DAEMON}" ] || DAEMON="/usr/local/sbin/grr_server.py"

[ -x "${DAEMON}" ] || exit 0

[ -r ${DEFAULTFILE} ] && . ${DEFAULTFILE}

. /lib/init/vars.sh

. /lib/lsb/init-functions

is_true() {
	if [ "x$1" = "xtrue" -o "x$1" = "xyes" -o "x$1" = "x0" ] ; then
		return 0
	else
		return 1
	fi
}

do_start() {
	if is_true "${START}" ; then
		start-stop-daemon --start \
		--quiet \
		--test \
		--make-pidfile \
		--pidfile ${PIDFILE} \
		--startas ${DAEMON} -- ${DAEMON_ARGS} || return 1

		start-stop-daemon --start \
		--quiet \
		--background \
		--make-pidfile \
		--pidfile ${PIDFILE} \
		--startas ${DAEMON} -- ${DAEMON_ARGS} || return 2
	else
		echo ""
		echo "${DESC} not configured to start, please edit ${DEFAULTFILE} to enable"
	fi
}

do_stop() {
	start-stop-daemon --stop \
	--quiet \
	--oknodo \
	--retry=TERM/30/KILL/5 \
	--pidfile ${PIDFILE}

	RETVAL="$?"

	[ "${RETVAL}" = 2 ] && return 2

	rm -f ${PIDFILE}

	return "${RETVAL}"
}

do_reload() {
	start-stop-daemon --stop \
	--quiet \
	--pidfile ${PIDFILE} \
	--signal HUP

	return 0
}

case "$1" in
	start)
		[ "${VERBOSE}" != no ] && log_daemon_msg "Starting ${DESC}" "${NAME}"

		do_start

		case "$?" in
			0|1)
				[ "${VERBOSE}" != no ] && log_end_msg 0
				;;

			2)
				[ "${VERBOSE}" != no ] && log_end_msg 1
				;;
		esac
		;;

	stop)
		[ "${VERBOSE}" != no ] && log_daemon_msg "Stopping ${DESC}" "${NAME}"

		do_stop

		case "$?" in
			0|1)
				[ "${VERBOSE}" != no ] && log_end_msg 0
				;;

			2)
				[ "${VERBOSE}" != no ] && log_end_msg 1
				;;
		esac
		;;

	status)
		status_of_proc -p "${PIDFILE}" "${DAEMON}" "${NAME}" && exit 0 || exit $?
		;;

	reload|force-reload)
		log_daemon_msg "Reloading ${DESC}" "${NAME}"

		do_reload

		log_end_msg $?
		;;

	restart)
		log_daemon_msg "Restaring ${DESC}" "${NAME}"

		do_stop

		case "$?" in
			0|1)
				sleep 1

				do_start

				case "$?" in
					0)
						log_end_msg 0
						;;

					1|2)
						log_end_msg 1
						;;
				esac
				;;

			2)
				log_end_msg 1
				;;
		esac
		;;

	*)
		echo "Usage: ${SCRIPTNAME} {start|stop|status|restart|force-reload|reload}" >&2

		exit 3
		;;
esac

:
